home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
newsgrp
/
group98b.txt
/
000096_icon-group-sender _Fri Jun 19 12:38:53 1998.msg
< prev
next >
Wrap
Internet Message Format
|
2000-09-20
|
10KB
Return-Path: <icon-group-sender>
Received: from kingfisher.CS.Arizona.EDU (kingfisher.CS.Arizona.EDU [192.12.69.239])
by baskerville.CS.Arizona.EDU (8.8.8/8.8.7) with SMTP id MAA22260
for <icon-group-addresses@baskerville.CS.Arizona.EDU>; Fri, 19 Jun 1998 12:38:53 -0700 (MST)
Received: by kingfisher.CS.Arizona.EDU (5.65v4.0/1.1.8.2/08Nov94-0446PM)
id AA13686; Fri, 19 Jun 1998 12:38:43 -0700
From: pygmy@eskimo.com (Frank Sergeant)
To: icon-group@baskerville.CS.Arizona.EDU
Subject: using Icon for database application
Date: Fri, 19 Jun 1998 12:11:28 -0500
Reply-To: frank.sergeant@pobox.com
Message-Id: <Avpi1Yv1ukQG084yn@eskimo.com>
Lines: 186
Errors-To: icon-group-errors@optima.CS.Arizona.EDU
Status: RO
Content-Length: 8752
I was in the process of attempting to pick my new
language for a particular application when the July '98
_Linux Journal_ arrived containing the Jeffery/Mohamed
article "A Glimpse of Icon". I enjoyed the article and
that led to reading the Linux Gazette article and various
Icon Newsletters, archived mailing list, etc. I'm now
reading the 1983 edition of _The Icon Programming Language_
(Icon v. 5).
I'd like to discuss some of my questions and concerns
related to Icon and its use in my application in hopes of
hearing your comments and suggestions. Please feel free to
email me or to post to the list as you prefer.
I maintain a medical accounts receivable application
that is installed in 12 or 13 small medical offices. Two of
us are involved: Hal for sales (if you can call it that) and
me for the programming and technical support. I took it over
nearly 4 years ago and have been improving it and cleaning
it up since then. It is written in Clipper (the dBASE or
xBASE language) and consists of around 150,000 lines of
source. It runs under DOS (or a DOS box in Windows). More
work is needed to clean it up further to make it easier to
maintain. Our typical customer has two or three PCs and
runs under a "file server" model with either DOS/Lantastic
or with W95 for the networking. Thus, all workstations
access the database files (*.DBF) and index files. (Any
workstation crashing puts the data files on the server at
risk.) I am interested in moving more toward a
"client/server" model where all access to the data files is
handled by a process on the server ("put all your eggs in
one basket then _watch_ the basket"). I am not interested
in buying or having our customers buy a commercial SQL
database system. I plan to handle the programming of the
data access myself. One obvious decision to make is whether
to do the cleaning up in Clipper before I convert or to
convert and clean up as I go.
Here are the reasons I am considering changing
languages (to the degree I know my own thinking):
1. Protect the data better by restricting its access
to a single program on the server.
2. Reduce network traffic (by not dragging the database
and index files over the ethernet) to speed up
the application. This is not a problem on an
ethernet, as it is fast enough, but opens the door
to making the application usable even over a modem.
3. By going to a 32-bit Windows program we get out of
the 16-bit Windows step child environment. My
feeling is that 16-bit applications are more likely
to suffer from Windows bugs than 32-bit "native"
applications.
4. Offering a "Windows" version of the program might
occasionally attract a customer who would not
consider a plain DOS application -- and might help
keep current customers.
5. Open the door to working in a mixed operating system
environment. In particular, for even better
reliability, customers could use a Linux box as the
server.
6. Our history of sales has been dismal. Still, we
have our core of loyal customers that use it year
after year and cheerfully pay our small ($300/year)
annual maintenance fee. I am in this for the long
run. If we never make another sale, I intend to
support these customers forever. However, I need to
do this as efficiently as possible, as I need to
take on other work to keep eating. So, platform and
vendor independence seem like worthy goals. This
seems to rule out VO (CA-Visual Objects, supposedly
the Windows-based successor to Clipper) and Delphi
which run only on Windows. Perhaps I should
consider Java, but I think I am suffering from hype
poisoning. Python and Perl sound good to me
primarily because of the delightfully literateness
of the Pythona Perl books' authors. I'm agreeable
to the idea that Perl's syntax is too muddy. Perl
still looks good. (Can anyone comment on the
various tradeoffs between these languages and Icon?)
Icon questions (or comments)
1. How do you think all this fits with Icon?
2. I gather Windows Icon can make a normal looking
Windows application (rather than a Motif-ish
application) and that I probably could figure out
how to do this by reviewing the source code for Wi.
Does that sound reasonable? Would _Graphics
Programming in Icon_ help? (I'm not interested in
drawing pictures, etc, just in the UI part.)
3. How fast is an Icon application? For example, I ran
the Python Megawidgets demo program that puts up a
screen full of entry fields (Pentium 90 with 48
MB RAM) and the fields rippled slowly onto the screen
rather than just popping up instantly. I'm afraid that
would be too slow. Many of our customers' machines
are not even up to a P90/48MB, e.g. '486 8MB. (Some
even use slow '386s and one uses one or two
'286s, but I would expect they would be willing to
upgrade.) My point is the application must be fast
enough on moderate hardware as I can't expect all
customer machines to be the latest and fastest.
4. How big would the .EXE file be? From a newsletter,
I understand there is the 200K or 300K overhead for
the Icon interpreter. How does .EXE file size grow
after this? (I imagine this is hard to answer, but
perhaps you can give me some idea.) Currently our
.EXE is about 850K, so I can live with that size,
but would prefer smaller.
5. Is a sockets interface only available for Unicon or
is it also available for Wicon? I would hope the
client programs on the workstations could connect
via sockets to the server running either on a
Windows 95 or Linux machine. The client machines
would almost certainly be W95 machines. If sockets
are not built in to Icon, how hard is it to make
calls to the Win32 system? How about to routines
produced by MSVC or Borland C? Perhaps I could
write the socket access routines in C and call them
from Icon?
6. So far I haven't been able to track down Idol. A
url or two for Idol on the web site seemed to give
an "invalid" message. Since I had also been
considering Python for this application, it seems I
should consider using Idol if I use Icon, right?
7. I currently make extensive use of Clipper's "ragged
arrays". These are essentially lists where the
elements can be of any type including other lists.
It looks like Icon's lists would just drop in and
work the same.
8. The current app is about 150,000 lines (over 100
source code files). How does Icon handle
applications of this size? I think the app is currently
more complex than is required. All we do, really,
is keep track of, display, modify various lists --
lists of doctors, patients, insurance companies,
charges, paygments, and such. (How hard can it be?)
9. The data, ignoring index files, probably runs 2 to
10 MB in most offices. At the larger sizes, much of
the data is relatively inactive and could be rolled
out to archives. On a modern machine, all the data
would fit in RAM. I am not talking about an
application with gigabytes of data and 200
workstations and multiple servers. We currently use
dBASE style .DBF files. These have fixed width
fields. As an experiment, I converted some of our
data files to variable width, delimited files
Smith, George|1234 W. 17th Street|etc|etc|etc
and was surprised to find it reduced file size by
about two-thirds. I'm not sure this is typical, but
it looks like going to variable width fields would
save a lot of space, making the data fit even more
easily into RAM, reducing the time of reading from
disk, etc. The cost would be the slower parsing of
records to locate the individual fields. Any
thoughts about the tradeoffs here?
10. I have been very impressed with Bertrand Meyer's
_Object Oriented Software Construction_. Can anyone
comment on the differences between Eiffel and Icon,
that is, why I might prefer Icon over Eiffel, etc?
All comments, suggestions, corrections gratefully
received.
-- Frank
frank.sergeant@pobox.com